#include <stdio.h>
#include <math.h>
// int main() {
//     int  n=0;
//     scanf("%d",&n);
//     int i=0;
//     int arr[100]={0};
//     for(i=0;i<n;i++)
//     {
//         scanf("%d",&arr[i]);
//         if(arr[i]<4)
//         {
//             printf("true\n");
//         }
//         else
//         {
//         int j=2;
//         int c=0;
//         for(j=2;j<=sqrt(arr[i]);j++)
//         {
//              int c=0;//此初始化的操作会被认为是重新定义了一个新的局部变量
//             if(arr[i]%j==0)
//             {
//                 printf("false\n");
//                 break;
//             }
//         else
//         c=1;            //这种情况下c会被认为是新的变量
//         }
//         if(c)
//         printf("true\n");
//         }
//     }
//     return 0;
// }
// #include <stdio.h>
// #include <math.h>
// int tame(int l)
// {
//     int sum=0;
//      while(l)
//         {
//             sum=sum+pow(l%10,4);
//             l=l/10;
//         }
//     return sum;
// }
// int main() {
//     int l=0;
//     int r=0;
//     int sum=0;
//     scanf("%d %d",&l,&r);
//     for(;l<=r;l++)  //产生l-r的数字
//     {
//         sum=tame(l);
//         if(sum==l)
//         {
//             printf("%d ",l);
//         }
//     }
//     return 0;
// }
#include <stdio.h>
int tame(int l,int sum) ///递归函数tame的问题在于你尝试将整数的每一位进行拆分并计算其四次方之和。
                        //然而，你没有正确地实现这个逻辑。在你的代码中，你在尝试拆分每一位的数字时使用的操作符无法正确达到你想要的结果。
{
    if(l>9)             //此外，你在递归函数中直接修改了全局变量sum的值，这在递归函数中是不好的实践
                        //你应该在每次递归调用时返回新的值。然后，在主函数中累加这些值。以下是一个可能的递归解决方案：
    {
        tame(l/10,sum);
    }
    return sum=sum+(l%10)*(l%10)*(l%10)*(l%10);
}
int main() {
    int l=0;
    int r=0;
    int sum=0;
    int s=0;
    //int *p=&sum;
    scanf("%d %d",&l,&r);
    for(;l<=r;l++)  //产生1-r的数字
    {
         s=tame(l,sum);//是每一位的四次方之和
         if(s==l)
         printf("%d\n",l);
    }
    return 0;
}